package Objetos 
{
	import flash.display.MovieClip;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import Levels.Level;
	/**
	 * ...
	 * @author ...
	 */
	public class Heroi extends MovieClip
	{
		protected var NB_velocidadeY	:Number;
		protected var NB_velocidadeX	:Number;
		protected var NB_gravidade		:Number;

		protected var MC_tiro			:Tiro;
		
		protected var BO_dir 			:Boolean;
		protected var BO_esq			:Boolean;
		public var BO_pulando			:Boolean;
		public var BO_morreu 			:Boolean;
		
		public var ST_animacao			:String;
	
<<<<<<< .mine
=======
		//public var UI_vida				:uint;
>>>>>>> .r9
		
		public function Heroi() 
		{
			NB_velocidadeY = 0;
			NB_gravidade = 0.9;
			NB_velocidadeX = 5;
			
<<<<<<< .mine
=======
			//UI_vida = 5;
>>>>>>> .r9
			
			ST_animacao = "parado"
			
			Main.getStage().addEventListener(KeyboardEvent.KEY_DOWN, pressionar, false, 0, true)
			Main.getStage().addEventListener(KeyboardEvent.KEY_UP, soltar, false, 0, true)
			
		}
		
		public function update():void
		{
			this.y += NB_velocidadeY;
			NB_velocidadeY += NB_gravidade;
			if (BO_dir == true)
			{
				this.x += NB_velocidadeX;
				
				if (ST_animacao != "andando" && NB_velocidadeY < 1)
					{
						
						if (this.scaleX < 0)
						{
							this.scaleX *= -1						
						}
						ST_animacao = "andando";
					}
					this.gotoAndStop(ST_animacao)
			}
			
			if (BO_esq == true)
			{
				this.x -= NB_velocidadeX;
				
				if (ST_animacao != "andando" && NB_velocidadeY < 1)
					{
						if (this.scaleX > 0)
						{
							this.scaleX *= -1						
						}
						ST_animacao = "andando";
					}
					
					this.gotoAndStop(ST_animacao)
			}
			
		}
		
		public function pressionar (e:KeyboardEvent):void
		{
			switch(e.keyCode)
			{
				case Keyboard.RIGHT:
					BO_dir = true;
					break;
					
				case Keyboard.LEFT :
					BO_esq = true;
					break;
					
				case Keyboard.SPACE :
					criandoTiro();
					break;
			}	
			
			if (BO_pulando == false)
				{
					switch (e.keyCode)
					{
						case Keyboard.UP :
						if (ST_animacao != "pulando")
						{
							NB_velocidadeY -= 10;
							BO_pulando = true;
							ST_animacao = "pulando"
							this.gotoAndStop(ST_animacao)
							trace (BO_pulando)
						}							
							break;
					}
				}
				
				if (ST_animacao == "pulando" && NB_velocidadeX == 0)
				{
					ST_animacao = "parado"
					this.gotoAndStop(ST_animacao)
				}
		}
		
		public function soltar (e:KeyboardEvent):void
		{
			switch(e.keyCode)
			{
				case Keyboard.RIGHT :
					BO_dir = false;
					
					if (ST_animacao != "parado")
					{
						ST_animacao = "parado"
						this.gotoAndStop(ST_animacao)
					}
					break;
					
				case Keyboard.LEFT :
					BO_esq = false;
					
					if (ST_animacao != "padado")
					{
						ST_animacao = "parado"
						this.gotoAndStop(ST_animacao)
					}
					break;
			}
		} 
		
		public function criandoTiro():void
		{
			if(this.scaleX > 0)
			{
				MC_tiro = new Tiro("direita");
				MC_tiro.x = this.x + 20;
			}
			
			else 
			{
				MC_tiro = new Tiro("esquerda");
				MC_tiro.x = this.x - 20;
			}
			
			MC_tiro.y = this.y;
			Main.getInstance().MC_tela.addChild(MC_tiro);
			Level.AR_tiros.push(MC_tiro);

		}
		
		public function set trocarVelocidadeY(a:Number):void
		{
			NB_velocidadeY = a;
		}
		
		public function get getVelocidadeY():Number
		{
			return this.NB_velocidadeY;
		}

	}

}